package com.sysd.server.handler;

import com.sysd.entity.LoginUser;
import com.sysd.server.container.ChannelContainer;
import com.sysd.server.handler.base.AbstractAuthBaseHandler;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * @description: 验证登入  验证成功的才会加入到容器中，后面如果验证失败就丢弃通道
 * @author: bsh
 * @date: 2025/6/5 11:43
 */
@Component
@RequiredArgsConstructor
@ChannelHandler.Sharable
@Slf4j
public class AuthHandler extends AbstractAuthBaseHandler<LoginUser> {
    private final ChannelContainer channelContainer;
    /**
     * @param channelHandlerContext 这里协议已经升级了，发送的第一条消息需要鉴权吧一些鉴权需要的参数发送过来
     * @param loginUser             登入的用户
     */
    @Override
    public void channelRead1(ChannelHandlerContext channelHandlerContext, LoginUser loginUser) {
        //todo 调用一下别人的请求 返回验证结果
        boolean res = true;
        if(res){
            try{
                channelContainer.putChatChannel(loginUser.getUserId(), channelHandlerContext.channel());
                return;
            }
            catch (Exception e){
                log.error("验证失败:{}",e.getMessage());
            }
        }
        channelHandlerContext.channel().close();
    }
}
